const app = getApp();
Page({
  data: {
    userInfo: {
      username: '',
      nickname: '',
      avatar: '',
      phone: ''
    },
    orderCount: {
      all: 0,
      unpaid: 0,
      completed: 0
    }
  },
  
  onShow(){
    let _this = this;
    wx.setNavigationBarTitle({
      title: '个人中心'
    });
    
    if(!app.globalData.isLogin){
      wx.navigateTo({
        url: '/pages/login/login',
      });
      return;
    }
    
    // 获取用户信息
    this.fetchUserInfo();
    
    // 获取订单统计
    this.fetchOrderCount();
  },
  
  onLoad: function(options) {
    // 获取用户信息
    this.fetchUserInfo();
    
    // 获取订单数量
    this.fetchOrderCount();
    
    // 打印当前用户信息和角色，用于调试
    this.printUserInfo();
  },

  // 打印用户信息（调试用）
  printUserInfo: function() {
    const userInfo = wx.getStorageSync('userInfo');
    console.log('=== 当前用户信息 ===');
    console.log('用户信息对象:', userInfo);
    if (userInfo) {
      console.log('用户ID:', userInfo.userId);
      console.log('用户名:', userInfo.username);
      console.log('用户角色:', userInfo.role);
      console.log('角色类型: ' + (userInfo.role === 2 ? '管理员' : '普通用户'));
    } else {
      console.log('未找到用户信息');
    }
  },
  
  // 获取用户信息
  fetchUserInfo() {
    const _this = this;
    if(!app.globalData.userInfo){
      wx.showLoading({
        title: '加载中',
      });
      
      // 实际应该从API获取
      wx.mRequest({
        url: '/api/user',
        success(res){
          wx.hideLoading();
          if(res.code == 1){ // 请求成功
            app.globalData.userInfo = res.data;
            _this.setData({
              userInfo: res.data
            });
          }
        },
        fail() {
          wx.hideLoading();
          // 使用模拟数据
          const mockUserInfo = {
            username: 'user123456',
            nickname: '旅游达人',
            avatar: '/img/logo.png',
            phone: '138****8888'
          };
          app.globalData.userInfo = mockUserInfo;
          _this.setData({
            userInfo: mockUserInfo
          });
        }
      });
    } else {
      this.setData({
        userInfo: app.globalData.userInfo
      });
    }
  },
  
  // 获取订单统计
  fetchOrderCount() {
    // 实际应该从API获取
    // 这里使用模拟数据
    this.setData({
      orderCount: {
        all: 5,
        unpaid: 2,
        completed: 3
      }
    });
    
    // 实际API调用应类似如下：
    /*
    wx.mRequest({
      url: '/api/orders/count',
      success: res => {
        if(res.code == 1) {
          this.setData({
            orderCount: res.data
          });
        }
      }
    });
    */
  },
  
  // 更换头像
  changeAvatar() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: res => {
        // 显示选择的图片
        this.setData({
          'userInfo.avatar': res.tempFilePaths[0]
        });
        
        // 实际应该上传到服务器
        wx.showToast({
          title: '头像更新成功',
          icon: 'success'
        });
        
        // 更新全局数据
        if(app.globalData.userInfo) {
          app.globalData.userInfo.avatar = res.tempFilePaths[0];
        }
      }
    });
  },
  
  // 编辑用户信息
  editUserInfo(e) {
    const field = e.currentTarget.dataset.field;
    if (field === 'username') {
      wx.showToast({
        title: '账号不可修改',
        icon: 'none'
      });
      return;
    }
    
    const currentValue = this.data.userInfo[field] || '';
    
    wx.showModal({
      title: '修改' + (field === 'nickname' ? '昵称' : '手机号'),
      content: '',
      editable: true,
      placeholderText: currentValue || '请输入',
      success: res => {
        if (res.confirm && res.content) {
          // 更新本地数据
          const userInfo = this.data.userInfo;
          userInfo[field] = res.content;
          
          this.setData({
            userInfo: userInfo
          });
          
          // 更新全局数据
          if(app.globalData.userInfo) {
            app.globalData.userInfo[field] = res.content;
          }
          
          // 实际应该提交到服务器
          wx.showToast({
            title: '更新成功',
            icon: 'success'
          });
        }
      }
    });
  },
  
  // 导航到订单页面
  navigateToOrder(e) {
    const type = e.currentTarget.dataset.type;
    let tab = 0;
    
    switch(type) {
      case 'unpaid':
        tab = 1;
        break;
      case 'completed':
        tab = 2;
        break;
      default:
        tab = 0;
    }
    
    wx.switchTab({
      url: `/pages/order/order?tab=${tab}`
    });
  },
  
  // 导航到收藏页面
  navigateToFavorites() {
    wx.showToast({
      title: '收藏功能开发中',
      icon: 'none'
    });
  },
  
  // 导航到浏览历史
  navigateToHistory() {
    wx.showToast({
      title: '历史功能开发中',
      icon: 'none'
    });
  },
  
  // 导航到反馈页面
  navigateToFeedback() {
    wx.showToast({
      title: '反馈功能开发中',
      icon: 'none'
    });
  },
  
  // 导航到帮助中心
  navigateToHelp() {
    wx.showToast({
      title: '帮助中心开发中',
      icon: 'none'
    });
  },
  
  // 导航到修改密码页面
  navigateToChangePassword() {
    wx.showToast({
      title: '密码修改功能开发中',
      icon: 'none'
    });
  },
  
  // 导航到隐私设置页面
  navigateToPrivacy() {
    wx.showToast({
      title: '隐私设置功能开发中',
      icon: 'none'
    });
  },
  
  // 导航到关于我们页面
  navigateToAbout: function() {
    wx.navigateTo({
      url: '/pages/about/about'
    });
  },

  // 导航到管理员后台
  navigateToAdmin: function() {
    wx.navigateTo({
      url: '/pages/admin/admin'
    });
  },
  
  // 退出登录
  bindUserLogout(){
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: res => {
        if(res.confirm) {
          wx.showLoading({
            title: '退出中...',
          });
          
          // 调用退出登录API
          wx.mRequest({
            url: '/api/auth/logout',
            method: 'POST',
            success(res){
              wx.hideLoading();
              app.globalData.isLogin = false;
              app.globalData.userInfo = null;
              wx.clearStorageSync();
              wx.reLaunch({
                url: '/pages/login/login',
              });
            },
            fail() {
              wx.hideLoading();
              // 即使API失败也执行本地退出
              app.globalData.isLogin = false;
              app.globalData.userInfo = null;
              wx.clearStorageSync();
              wx.reLaunch({
                url: '/pages/login/login',
              });
            }
          });
        }
      }
    });
  }
})